/**
 * 抽象形状基类，定义计算面积的契约，子类应实现 getArea()
 * 使用抽象基类/接口可以确保不同形状可以互换而不破坏行为——满足里氏替换原则。
 */
public abstract class Shape {
    public abstract double getArea();
}
